Procedure RotateText(Canvas:TCanvas;    //Khung ve
                                          X,Y:Integer;          //Toa o bat au ve
                                          Text:PChar;            //Chuoi can ve
                                          Angle:integer);    //Goc xoay
var

LogRec: TLOGFONT;    
OldFont,                     
NewFont: HFONT;

begin
     GetObject(Canvas.Font.Handle, SizeOf(LogRec),
                                                                                        @LogRec);
     LogRec.lfEscapement := Angle*10;
     LogRec.lfOutPrecision := OUT_TT_ONLY_PRECIS;
    
     NewFont := CreateFontIndirect(LogRec);

     OldFont := SelectObject(Canvas.Handle,NewFont);

     Canvas.TextOut(X, Y, Text);

     NewFont :=SelectObject(Canvas.Handle, OldFont);
     DeleteObject(NewFont);
end;
